package ar.com.logic.components.actualizadores;

import java.util.List;
import java.util.Vector;

import ar.com.logic.components.interfaces.IHistoricoRespuestas;
import ar.com.logic.components.interfaces.IMatrizPosiciones;

public class ActualizadorManager {
	private List<IActualizadorPosiciones> actualizadores;

	public ActualizadorManager() {
		actualizadores = new Vector<IActualizadorPosiciones>();
		cargarActualizadoresIniciales();
	}

	private void cargarActualizadoresIniciales() {
		
		this.actualizadores.add(new ActualizadorDescartarPorDigitosEncontrados());
		this.actualizadores.add(new ActualizadorRespuestaPosicionUnica());
		this.actualizadores.add(new ActualizadorPorDescarteSinUso());
		

	}

	public void agregarActualizador(IActualizadorPosiciones actualizador) {
		this.actualizadores.add(actualizador);
	}

	public void actualizar(IMatrizPosiciones matriz,
			IHistoricoRespuestas historico) {
		List<IActualizadorPosiciones> aBorrar = new Vector<IActualizadorPosiciones>();
		for (IActualizadorPosiciones actualizador : actualizadores) {
			if (actualizador.actualizar(matriz, historico)
					&& actualizador.esDeEjecucionUnica()) {
				aBorrar.add(actualizador);
			}
		}
		this.actualizadores.removeAll(aBorrar);
	}
}
